#ifndef DATAPOINT_H
#define DATAPOINT_H

#include <QString>
#include <QDateTime>

/**
 * @brief 数据点实体类
 * @details 对应数据库 realtime_data 表，表示某一时刻设备的采集数据
 */
class DataPoint
{
public:
    DataPoint();
    DataPoint(const QString &deviceId, double temperature, double pressure, double flow);

    // Getter 方法
    int id() const { return m_id; }
    QString deviceId() const { return m_deviceId; }
    QDateTime timestamp() const { return m_timestamp; }
    double temperature() const { return m_temperature; }
    double pressure() const { return m_pressure; }
    double flow() const { return m_flow; }

    // Setter 方法
    void setId(int id) { m_id = id; }
    void setDeviceId(const QString &deviceId) { m_deviceId = deviceId; }
    void setTimestamp(const QDateTime &timestamp) { m_timestamp = timestamp; }
    void setTemperature(double temperature) { m_temperature = temperature; }
    void setPressure(double pressure) { m_pressure = pressure; }
    void setFlow(double flow) { m_flow = flow; }

    // 工具方法
    bool isValid() const { return !m_deviceId.isEmpty(); }
    bool hasTemperature() const { return m_temperature >= 0.0; }
    bool hasPressure() const { return m_pressure >= 0.0; }
    bool hasFlow() const { return m_flow >= 0.0; }

private:
    int m_id;              // 自增主键
    QString m_deviceId;    // 设备 ID（关联 devices 表）
    QDateTime m_timestamp; // 数据采集时间戳
    double m_temperature;  // 温度（℃）
    double m_pressure;     // 压（力kPa）
    double m_flow;         // 流量（L/min）
};

#endif // DATAPOINT_H
